#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;


void f(int arr[],int n){
    stack<int> s;
    int flag = 1;
    int arr_i=0;
    int m=1;
    for(int i = 0;i < n;i++){
        s.push(m);
        while(!s.empty() && arr[arr_i] == s.top()){
//            cout << s.top() << endl;
            s.pop();
            arr_i++;
        }
        m++;
    }
//    while(!s.empty()){
//        cout << s.top() << " ";
//        s.pop();
//    }
    while(!s.empty()){
        if(s.top() != arr[arr_i]){
            flag = 0;
            break;
        }
        s.pop();
        arr_i++;
    }
    if(flag==1){
        cout << "Yes" << endl;
    }else{
        cout << "No" << endl;
    }
}
int main(){
    int n;
    cin >> n;
    while(n!=0){
        int arr[n];
        for(int i = 0;i < n;i++){
            cin >> arr[i];
        }
        f(arr,n);
        cin >> n;
    }
    
}
// 10  78 40 34  17 11 14 7 4 3 1    17
